<?php
class ADevolucioCliente {

	public function __construct() {
	}

	public function generarNotaCredito(EFacade & $facade) {
		
		
		
		//echo 'se entro';
		epLoadConfig('../config.xml');

		$m = epManager::instance();
		$doc = & $facade->getDocumentRoot();
	    $workflowNDC = & $facade->getWorkflow();
		$ezpdo_= getManager();
		$role=NULL;

		
		$network=$doc->workflowRef->networkRef;
		
		$query='FROM MConfiguracionCuenta as t WHERE t.documento.oid=?';
		$configuracion=$ezpdo_->find($query,$network->epGetObjectId());
		//echo '<br>configuracion contable',$configuracion[0];
		
		
		$cuentas=$configuracion[0]->cuenta;
		$totalCompra=$doc->importeTotal;
		if($doc->devuelveDinero){
			$doc->cuentaCaja->cuentaContable->disminuye($totalCompra,$doc);
			$doc->cuentaCaja->cuentaContable->commit();
		}
		else{
			foreach($cuentas as $c){
			
			
			if($c->posicion==2){
				$c->cuentaContable->disminuye($totalCompra,$doc);
				$c->cuentaContable->commit();
			}
		}
		}	
		
		//************CUENTA inventario ACTUALIZACION********************************//
		
		$productos=$doc->productoList;
		$contador=0;
		foreach($productos as $p){
			$item=$p->item->esUnProducto->tipoProducto->descritoPor;
			$contador=$contador+$item->precioCompra;
			
		}
		
		foreach($cuentas as $c){
			
			
			if($c->posicion==1){
				$c->cuentaContable->aumenta($contador,$doc);
				$c->cuentaContable->commit();
			}
		}
		
		if(!$doc->devuelveDinero){
			$notaCredito = $facade->session->create('DNotaCreditoDevolucionCliente');
			$queryDep='FROM MDepartamento as t WHERE t.identificadorUnico=?';
			$dept = $ezpdo_->find($queryDep,'IdDep-1');
			$doc->notaCredito=$notaCredito;
			$notaCredito->departamento = $doc->departamento;//$dept[0];
			
			$query='FROM MVariant as t WHERE t.oid=?';
			$variant = $ezpdo_->find($query,'1'); //del padre
			
			$notaCredito->variante = $doc->variante;//$variant[0];
			$notaCredito->importeTotal = $doc->importeTotal;
			
			$productos=$doc->productoList;
			foreach($productos as $p){
				$lista=$m->create('MListaItemsNotaCredito');
				$lista->producto=$p->item->esUnProducto;
				$lista->cantidad=$p->cantidad;
				$notaCredito->productoList[]=$lista;
			}
			
			$notaCredito->epSetDirty(TRUE);
			$notaCredito->cliente = $doc->cliente;
			$notaCredito->numeroControlFactura = $doc->factura->numeroFactura;
			$notaCredito-> newInvoiceNumber();
			$notaCredito->facturaCliente=$doc->factura;
			$notaCredito->fechaCreacion = date('U');
			

			$role=NULL;
			$newEfacade =& EFacade :: initWorkflow($facade->session, $notaCredito, & $role);
			$transSet = & EFacade :: getCurrentTransSetAuto($newEfacade->getWorkflow(),3);//tipo process
			$trans = $transSet->getTransByName('t1');
			$usuario=NULL;
			///echo "<br><br> es:0 ",$reciboCliente;
			$newEfacade->fireTrans($trans, $usuario, "Creacion",TRUE);
			$newEfacade->saveWorkflow();
			//$reciboCliente->epSetDirty(TRUE);// marcar el documento para que sea salvado los cambios
			
			//echo "<br><br> es:1 ";
			$notaCredito->commit();
			$notaCredito->numero = $notaCredito->getDocumentNumber();//echo "<br><br> es:2..1",
			$notaCredito->commit();
			
		}
			//
			//echo "<br><br> es:2",$reciboCliente;
		//echo '<br> jj ',$doc, '<hr> uhyfytf ',$notaCredito;
		$doc->epSetDirty(TRUE);// marcar el documento para que sea salvado los cambios en su lista de items
		$workflowNDC->epSetDirty(TRUE);
		$facade->saveWorkflow();			
		//echo '<hr>TTT',$doc,' ---- ',$ctaBancaria;
		
		$transSetSA = & EFacade :: getCurrentTransSetAuto($workflowNDC, 2); //TYPE AUTO AGENT
		$role=NULL;
		$transSA = $transSetSA->getTransByName('t2');
		$facade->fireTrans($transSA,$role,'Crear Nota de Credito', TRUE);
		//echo '<br>listo';
			
	}
	
	
}
?>